﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.Text;
using SOAPServices.Persistencia;
using SOAPServices.Dominio;
using SOAPServices.Excepcion;

namespace SOAPServices
{   
    public class Clientes : IClientes
    {
        private ClienteDAO clienteDAO = null;
        private ClienteDAO ClienteDAO
        {
            get
            {
                if (clienteDAO == null)
                    clienteDAO = new ClienteDAO();
                return clienteDAO;
            }
        }

        private DistritoDAO distritoDAO = null;
        private DistritoDAO DistritoDAO
        {
            get
            {
                if (distritoDAO == null)
                    distritoDAO = new DistritoDAO();
                return distritoDAO;
            }
        }

        ClienteServWS.ClientesClient proxycliente = new ClienteServWS.ClientesClient();

        public String CrearCliente(string dni, string nombre, string direccion, string correo, int distrito)
        {
            ClienteServWS.Cliente clienteResultado = proxycliente.CrearCliente(dni, nombre, direccion, correo, distrito);

            return "El cliente ha sido guardado exitosamente (" + clienteResultado.Codigo + ")";

            /*Cliente clienteACrear;
            try
            {
                Distrito distritoExistente = DistritoDAO.Obtener(distrito);
                clienteACrear = new Cliente()
                {
                    Dni = dni,
                    Nombre = nombre,
                    Direccion = direccion,
                    Correo = correo,
                    Distrito = distritoExistente
                };
                Cliente ClienteResultado = clienteDAO.Crear(clienteACrear);
            }
            catch
            {
                throw new FaultException<ValidationException>(new ValidationException
                {
                    ValidationError = "Error al registrar un cliente"
                }, new FaultReason("Error al registrar un cliente"));
            }
            return clienteACrear;*/
        }

        public ClienteServWS.Cliente ObtenerCliente(int codigo)
        {
            return proxycliente.ObtenerCliente(codigo);
        }

        public List<ClienteServWS.Cliente> ListarCliente()
        {
            return proxycliente.ListarCliente().ToList();
        }

        public string ModificarCliente(int codigo, string dni, string nombre, string direccion, string correo, int distrito)
        {
            ClienteServWS.Cliente clienteResultado = proxycliente.ModificarCliente(codigo, dni,nombre,direccion, correo,distrito);

            return "El cliente sido guardado exitosamente (" + clienteResultado.Codigo + ")";
        }

        public string EliminarCliente(int Codigo)
        {
            proxycliente.EliminarCliente(Codigo);
            return "El cliente ha sido eliminado exitosamente";
        }

        /*public Cliente ModificarCliente(int codigo, string dni, string nombre, string direccion, string correo, int distrito)
        {
            Distrito distritoExistente = DistritoDAO.Obtener(distrito);
            Cliente clienteAModificar = new Cliente()
            {
                Codigo=codigo,
                Dni = dni,
                Nombre = nombre,
                Direccion = direccion,
                Correo = correo,
                Distrito = distritoExistente
            };
            return ClienteDAO.Modificar(clienteAModificar);
        }

        public void EliminarCliente(int codigo)
        {
            Cliente clienteExistente = ClienteDAO.Obtener(codigo);
            ClienteDAO.Eliminar(clienteExistente);
        }

        public List<Cliente> ListarCliente()
        {
            return ClienteDAO.ListarTodos().ToList();
        }*/
    }
}
